/**
 * 存储管理对象
 * 目标：将现有系统的所有需要存储的数据，统一管理
 *
 * @author terrfly
 * @site https://www.jeequan.com
 * @date 2022/04/13 07:18
 */
import appConfig from '@/config/appConfig.js'

const model = {
	// 获取和放置token
	token: (val, isDelete = false) => {
		if (isDelete) {
			appConfig.tokenVal = ''
			return uni.removeStorageSync(appConfig.tokenKey)
		}

		if (val) {
			// 有值，为放置
			appConfig.tokenVal = val
			uni.setStorageSync(appConfig.tokenKey, val)
		} else {
			// 否则为获取

			if (!appConfig.tokenVal) {
				//缓存取不到，获取应用本地信息
				appConfig.tokenVal = uni.getStorageSync(appConfig.tokenKey)
			}
			return appConfig.tokenVal
		}
	},

	// 已经登录的用户记录
	loggedInUser: (addUserName = null, removeUserName = null) => {
		let key = 'loggedInUserList'

		// 删除
		if (removeUserName) {
			let nameList = uni.getStorageSync(key) || []
			if (nameList.length <= 0) {
				//不存在数据
				return false
			}

			let hasUserIndex = nameList.indexOf(removeUserName)
			if (hasUserIndex >= 0) {
				nameList.splice(hasUserIndex, 1) //删除
				uni.setStorageSync(key, nameList)
			}

			return false
		}

		// 有新插入的记录
		if (addUserName) {
			let nameList = uni.getStorageSync(key) || []

			let hasUser = false
			for (let i = 0; i < nameList.length; i++) {
				if (nameList[i] == addUserName) {
					hasUser = true
				}
			}

			// 包含记录
			if (hasUser) {
				return false
			}

			// 最多存储 5 个
			if (nameList.length >= 5) {
				nameList.splice(0, 1) //删除第一个
			}
			nameList.push(addUserName)
			uni.setStorageSync(key, nameList)

			//获取
		} else {
			return uni.getStorageSync(key) || [] //默认空数组
		}
	},

	// 用户信息
	userInfo: (currentUserInfo) => {
		if (currentUserInfo) {
			// 仅保存基础数据
			let saveUser = {
				sysUserId: currentUserInfo.sysUserId,
				userType: currentUserInfo.userType,
				isEpUuser: currentUserInfo.userType === 3, //是否拓展员
				state: currentUserInfo.state,
				inviteCode: currentUserInfo.inviteCode,
				inviteCodeUrl: currentUserInfo.inviteCodeUrl,
                entIdList: currentUserInfo.entIdList,
			}
			uni.setStorageSync('currentUserInfo', saveUser) // 改变存储
		}

		return uni.getStorageSync('currentUserInfo')
	},

	// 项目环境变量：（测试、 生产的切换）
	env: (envMode) => {
		if (envMode) {
			uni.setStorageSync('currentEnvEnum', envMode) // 改变存储
		}
		return uni.getStorageSync('currentEnvEnum')
	},
	// 工作工具样式
	toolStyle: (style) => {
		if (style) {
			uni.setStorageSync('toolStyle', style) // 改变存储
		}
		return uni.getStorageSync('toolStyle')
	},
  uploadImgSize: (uploadImgSize) => {
    if (uploadImgSize) {
        uni.setStorageSync("uploadImgSize", uploadImgSize) // 存储 上传 图片大小限制
    }
  return uni.getStorageSync("uploadImgSize")
  },
}

export default model
